package astar 
{
	/**
	 * AStar 节点类
	 * @author StefanieKaka
	 */
	public class Node 
	{
		/// 构造函数
		public function Node(x : int, y : int) 
		{
			m_x = x;
			m_y = y;
		}
		
///////////////////////////////////////////////////////////////////////////////////////////////////
// 公共域
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 列坐标
		 */
		public function get x() : int
		{
			return m_x;
		}
		
		public function set x(value : int) : void
		{
			m_x = value;
		}
		
		/**
		 * 行坐标
		 */
		public function get y() : int
		{
			return m_y;
		}
		
		public function set y(value : int) : void
		{
			m_y = value;
		}
		
		/**
		 * 总代价
		 */
		public function get f() : Number
		{
			return m_f;
		}
		
		public function set f(value : Number) : void
		{
			m_f = value;
		}
		
		/**
		 * 已知代价
		 */
		public function get g() : Number
		{
			return m_g;
		}
		
		public function set g(value : Number) : void
		{
			m_g = value;
		}
		
		/**
		 * 预估代价
		 */
		public function get h() : Number
		{
			return m_h;
		}
		
		public function set h(value : Number) : void
		{
			m_h = value;
		}
		
		/**
		 * 是否可通过
		 */
		public function get walkable() : Boolean
		{
			return m_walkable;
		}
		
		public function set walkable(value : Boolean) : void
		{
			m_walkable = value;
		}
		
		/**
		 * 父节点
		 */
		public function get parent() : Node
		{
			return m_parent;
		}
		
		public function set parent(value : Node) : void
		{
			m_parent = value;
		}
		
		public function toString() : String
		{
			var str : String = "[Node:"
				+ ", x=" + m_x
				+ ", y=" + m_y
				+ ", g=" + m_g
				+ ", h=" + m_h
				+ ", f=" + m_f
				+ ", walkable=" + m_walkable + "]";
			return str;
		}

///////////////////////////////////////////////////////////////////////////////////////////////////
// 私有域
///////////////////////////////////////////////////////////////////////////////////////////////////

		private var m_x : int = 0;
		private var m_y : int = 0;
		private var m_f : Number = 0;
		private var m_g : Number = 0;
		private var m_h : Number = 0;
		private var m_walkable : Boolean = true;
		private var m_parent : Node = null;
		
	}

}